Page({

  data: {
    img_urls: []
  },

  /**
   * 监听小程序加载的函数
   * 在小程序加载时拉取云数据库中存储的图片id
   * @param {*} options 
   */

  // 生命周期函数可以参考：https://www.ourspark.org/point/course_content/602df4b15165a14f347bb48b,%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%9F%BA%E7%A1%80,%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%A6%82%E8%BF%B0
  onLoad: function(options) {
    /**
     * 调用云函数获取云数据库中的图片id，云函数相关内容可以参考：https://www.ourspark.org/point/course_content/602df4b15165a14f347bb48b,%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%BA%91%E5%BC%80%E5%8F%91,%E4%BA%91%E5%87%BD%E6%95%B0
    */
    wx.cloud.callFunction({
      name: 'uploadImage',
      data: {
        type: 'getUrls'
      }
    })
    .then(res => {
        console.log(res)
      if (res.result.state) {
        for (let i in res.result.data.data) {
          this.data.img_urls.push(res.result.data.data[i].file_id);
        }
        console.log(this)
        this.setData({
          img_urls: this.data.img_urls
        })
      }
      else {
        throw(res.result.message);
      }
    })
    .catch(err => {
      console.log('获取图片url列表错误', err);
    })
  },

  /**
   * 点击上传图片按钮触发的事件函数
   * @param {} e 
   */
  upload: function(e) {
    // 小程序选择图片api，具体内容参考文档：https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html
    wx.chooseImage({
      count: 1,
    })
    .then(res => {
      // 向云存储中上传图片api，云存储相关内容可参考：https://www.ourspark.org/point/course_content/602df4b15165a14f347bb48b,%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%BA%91%E5%BC%80%E5%8F%91,%E4%BA%91%E5%AD%98%E5%82%A8%E6%9C%8D%E5%8A%A1
      wx.cloud.uploadFile({
        cloudPath: 'uploadImage/' + (new Date()).getTime().toString() + '.jpeg',
        filePath: res.tempFilePaths[0]
      })
      .then(res1 => {
          console.log(res1)
        if (res1.errMsg == 'cloud.uploadFile:ok') {
          // 向云数据库中存储上传的图片id
          wx.cloud.callFunction({
            name: 'uploadImage',
            data: {
              type: 'addUrl',
              file_id: res1.fileID
            }
          })
          .then(res2 => {
            if (res2.result.state) {
              this.data.img_urls.push(res2.fileID);
              this.setData({
                img_urls: this.data.img_urls
              })
            }
            else {
              throw(res2.result.message);
            }
          })
          .catch(err2 => {
            console.log('调用添加url云函数错误', err2);
            wx.cloud.deleteFile({
              fileList: [res1.fileID]
            })
            .then(res3 => {
              console.log(res3);
            })
            .catch(err3 => {
              console.log('删除文件错误', err3);
            })
          })
        }
        else {
          throw(res1.errMsg);
        }
      })
      .catch(err1 => {
        console.log('上传云存储错误', err1);
      })
    })
    .catch(err => {
      console.log('获取图片错误', err);
    })
  }
})